package role

import (
	"context"
	"kstar-gf-api/internal/dao"
	"kstar-gf-api/internal/model"
	"kstar-gf-api/internal/model/entity"
	"kstar-gf-api/internal/service"

	"github.com/gogf/gf/v2/container/gmap"
)

type sRole struct{}

func init() {
	service.RegisterRole(New())
}

func New() *sRole {
	return &sRole{}
}

// 获取角色列表
func (s *sRole) GetRoleList(ctx context.Context, in *model.RoleListInput, page int, pageSize int) (list []*entity.SysRole, count int, err error) {
	count = 0
	list = make([]*entity.SysRole, 0)

	where := gmap.New()
	if len(in.RoleIds) > 0 {
		where.Set(dao.SysRole.Columns().RoleId, in.RoleIds)
	}
	if in.RoleName != "" {
		where.Set(dao.SysRole.Columns().RoleName, in.RoleName)
	}

	if pageSize > -1 {
		err = dao.SysRole.Ctx(ctx).Where(where).OrderAsc(dao.SysRole.Columns().RoleId).Page(page, pageSize).ScanAndCount(&list, &count, true)
	} else {
		err = dao.SysRole.Ctx(ctx).Where(where).OrderAsc(dao.SysRole.Columns().RoleId).Scan(&list, true)
	}

	return
}

func (s *sRole) GetRoleInfo(ctx context.Context, roleId int64) (info *entity.SysRole, err error) {
	err = dao.SysRole.Ctx(ctx).Where(dao.SysRole.Columns().RoleId, roleId).Scan(&info)

	return
}
